package com.flying.list;

import com.flying.keyword.fina.Person;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

/**
 * @author 刘鹏飞
 * @ClassName ArrayListTest
 * @Date 2024/12/28 22:12
 * @Created by 刘鹏飞
 * @Description 测试List接口的使用
 */
public class ArrayListTest {

    public static void main(String[] args) {


        //  实例化 ArrayList容器
        //  使用 List的基本行为
        List<String> list = new ArrayList<>();

        // 添加元素
        boolean flag1 = list.add("小乔");
        boolean flag2 = list.add("司马懿");
        boolean flag3 = list.add("诸葛亮");
        boolean flag4 = list.add("周瑜");
        boolean flag5 = list.add("司马懿");

        // 删除元素

        boolean remove = list.remove("小乔");
        System.out.println("remove = " + remove);



        // 获取容器内元素个数
        int size = list.size();
        System.out.println("size = " + size);



        // 判断容器是否为空
        boolean empty = list.isEmpty();
        System.out.println("empty = " + empty);


        // 判断容器中是否包含指定元素
        boolean contains = list.contains("司马懿");
        System.out.println("contains = " + contains);

        // 清空数组

        list.clear();
        Object[] array = list.toArray();
        System.out.println(Arrays.toString(array));



    }



    /*
    List的基本行为
     增:
        add(Object obj)
        add(Collection coll)

     删:
        remove(Object obj)
        remove(int index)

     改:
        set(int index,Object element)

     查:
        get(int index)

     插入:
        add(int index,Object element)
        addAll(Collection coll)

     长度:
        size()

     遍历:
        iterator(): 使用迭代器进行遍历
        增强for循环
        一般的for循环


     */
    @Test
    public void test2(){

        ArrayList<Object> list = new ArrayList<>();

        // 增
        list.add("AA");
        list.add("BB");
        list.add(123);
        list.add(new Person());

        System.out.println(Arrays.toString(list.toArray()));

        // 通过索引添加元素
        list.add(0, "程咬金");
        System.out.println(Arrays.toString(list.toArray()));



        // 查
        Object o = list.get(0);
        System.out.println(o);


        // 改
        Object o1 = list.set(1, "百里守约"); // 方法返回值是被修改的元素
        System.out.println("o1 = " + o1);
        System.out.println(Arrays.toString(list.toArray()));







    }

    /**
     * 遍历操作
     */
    @Test
   public  void test3(){
        ArrayList<Object> list = new ArrayList<>();

        // 增
        list.add("AA");
        list.add("BB");
        list.add(123);
        list.add(new Person());

        // 1. 使用迭代器
        Iterator<Object> iterator = list.iterator();
        System.out.println("使用迭代器");
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
        iterator.remove();



        System.out.println("普通for循环");
        // 2. 普通for循环
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }


        System.out.println("增强for循环");
        // 3. 增强for循环
        for (Object o : list) {
            System.out.println(  o);
        }



    }




}
